#pragma once

#include <memory>

#include "../utils/object.h"

namespace fusion_perception {

class StorageFilter;
class StorageStrategy;
class Store {
public:
    Store(std::shared_ptr<StorageStrategy> storageStrategySptr, std::shared_ptr<StorageFilter> storageFilterSptr);

    void push(ObjectSptrVector msg);
    ObjectSptrVector take(int64_t microTs);

private:
    std::shared_ptr<StorageStrategy> storageStrategySptr_ { nullptr };
    std::shared_ptr<StorageFilter> storageFilterSptr_ { nullptr };
};

}